home *** CD-ROM | disk | FTP | other *** search
/ Softdisk G-S 93 / SGDS 93.2mg / SDGS.93 / SDA93 / A / M.GRAPH.INPT (.txt) < prev    next >
Encoding:
Applesoft BASIC Source Code  |  1989-05-22  |  7.3 KB  |  305 lines  |  [FC] Applesoft BASIC Program (0x0E01)

  1. 10  INVERSE 
  2. 1000  REM ==========
  3. 1010  REM Data Entry
  4. 1020  REM ==========
  5. 1030  CALL BOX,3,5,38,20
  6. 1040  PRINT "   Data Entry"
  7. 1050  PRINT 
  8. 1060  PRINT "1. Bar"
  9. 1070  PRINT "2. Pie"
  10. 1080  PRINT "3. Line"
  11. 1090  PRINT "4. Clear data"
  12. 1100  PRINT "5. Exit"
  13. 1110 PR$ = " Press the number of your choice.": GOSUB 50000
  14. 1120  GET K$
  15. 1130  IF K$ = ES$  THEN 1200
  16. 1140  IF   NOT  VAL(K$)  THEN  GOSUB 51000: GOTO 1110
  17. 1150 M2 =  VAL(K$): IF M2 >5  THEN  GOSUB 51000: GOTO 1110
  18. 1160  ON M2 GOSUB 11000,12000,13000,14000
  19. 1170  IF M2 = 5  THEN 1200
  20. 1180  GOTO 1000
  21. 1200  ONERR  GOTO 10000
  22. 1205  CALL BOX,11,10,18,3: PRINT "   One moment...": PRINT  CHR$(4)"CHAIN  M.GRAPH.MAIN"
  23. 10000  CALL  -3288
  24. 10010  POKE 216,0
  25. 10020  CALL BOX,5,5,30,15: PRINT : PRINT "          FATAL ERROR."
  26. 10030  PRINT : PRINT "     Missing a module."
  27. 10040  PRINT : PRINT "  Press a key to exit."
  28. 10050  GET K$
  29. 10060  POKE 104,8: GOTO 150
  30. 11000  REM =========
  31. 11010  REM Bar Entry
  32. 11020  REM =========
  33. 11030  CALL BOX,4,7,37,18
  34. 11040  PRINT "   Bar Chart"
  35. 11050 PR$ = "Fill the blanks. ESC when done.": GOSUB 50000
  36. 11060  PRINT  CHR$(20)
  37. 11070  VTAB 10: HTAB 5: PRINT "Graph Title:                     "
  38. 11080  VTAB 12: HTAB 5: PRINT "Units:           Show Avg (y/n)  "
  39. 11090  VTAB 14: HTAB 5: PRINT "Max:             Min:            "
  40. 11100  VTAB 16: HTAB 5: PRINT "Quantity of item A:              "
  41. 11110  REM bt$=bartitle:bu$=barunits:ba$=baravg:b9$=barmax:b0$=barmin:bq$(n)=barquantities
  42. 11120 BA$ = "Y"
  43. 11130 IN$ = BT$:H = 18:V = 10:IW = 19: GOSUB 52000:BT$ = IN$
  44. 11140  IF BU  THEN  GOSUB 11550: GOTO 11350
  45. 11150  IF K$ = ES$  THEN 11420
  46. 11160  IF IN$ = ""  THEN  GOSUB 51000: GOTO 11130
  47. 11170 IN$ = BU$:H = 12:V = 12:IW = 6: GOSUB 52000:BU$ = IN$
  48. 11180  IF BU  THEN 11130
  49. 11190  IF K$ = ES$  THEN 11420
  50. 11200  IF IN$ = ""  THEN  GOSUB 51000: GOTO 11170
  51. 11210 IN$ = BA$:H = 37:V = 12:IW = 1: GOSUB 52000:BA$ = IN$
  52. 11220  IF BU  THEN 11170
  53. 11230  IF K$ = ES$  THEN 11420
  54. 11240  IF IN$ = ""  THEN  GOSUB 51000: GOTO 11210
  55. 11250  IF IN$ < >"Y"  AND IN$ < >"y"  AND IN$ < >"N"  AND IN$ < >"n"  THEN  GOSUB 51000: GOTO 11210
  56. 11260 IN$ = B9$:H = 10:V = 14:IW = 8: GOSUB 56000:B9$ = IN$
  57. 11270  IF BU  THEN 11210
  58. 11280  IF K$ = ES$  THEN 11420
  59. 11290  IF IN$ = ""  THEN  GOSUB 51000: GOTO 11260
  60. 11300 IN$ = B0$:H = 27:V = 14:IW = 8: GOSUB 56000:B0$ = IN$
  61. 11310  IF BU  THEN 11260
  62. 11320  IF K$ = ES$  THEN 11420
  63. 11330  IF IN$ = ""  THEN  GOSUB 51000: GOTO 11300
  64. 11340 T = 0
  65. 11350  VTAB 16: HTAB 22: PRINT  CHR$(65 +T)":" SPC( 14):IN$ = BQ$(T):H = 27:V = 16:IW = 8: GOSUB 56000:BQ$(T) = IN$
  66. 11360  IF BU  THEN  IF   NOT T  THEN 11300
  67. 11370  IF BU  THEN  IF T  THEN T = T -1: GOTO 11350
  68. 11380  IF K$ = ES$  THEN 11420
  69. 11390  IF BQ$(T) = ""  THEN  GOSUB 51000: GOTO 11350
  70. 11400  IF T = 12  THEN  GOSUB 51000: GOTO 11130: REM  to top again
  71. 11410 T = T +1: GOTO 11350
  72. 11420  CALL BOX,7,10,26,5
  73. 11430  PRINT "Do you want to use this": PRINT "same data for the": PRINT "pie and line graphs?"
  74. 11440 PR$ = "       Press Y if you do.      ": GOSUB 50000
  75. 11450  GET K$
  76. 11460  IF K$ < >"Y"  AND K$ < >"y"  THEN 11540
  77. 11470 PT$ = BT$:LT$ = BT$:LU$ = BU$:L9$ = B9$:L0$ = B0$
  78. 11480  FOR T1 = 0 TO 16
  79. 11490 PQ$(T1) = BQ$(T1):LQ$(T1) = BQ$(T1)
  80. 11500  NEXT 
  81. 11510  FOR T1 = 0 TO 16
  82. 11520  IF  VAL(PQ$(T1)) <0  THEN PQ$(T1) = "0"
  83. 11530  NEXT 
  84. 11540  RETURN 
  85. 11550 T = 12
  86. 11560  IF BQ$(T) = ""  THEN T = T -1: IF T  THEN 11560
  87. 11570  RETURN 
  88. 12000  REM =========
  89. 12010  REM Pie Entry
  90. 12020  REM =========
  91. 12030  CALL BOX,4,7,37,18
  92. 12040  PRINT "   Pie Chart"
  93. 12050 PR$ = "Fill the blanks. ESC when done.": GOSUB 50000
  94. 12060  PRINT  CHR$(20)
  95. 12070  VTAB 10: HTAB 5: PRINT "Graph Title:                     "
  96. 12080 :
  97. 12090 :
  98. 12100  VTAB 16: HTAB 5: PRINT "Quantity of item A:              "
  99. 12110  REM  bt$=bartitle:bu$=barunits:ba$=baravg:b9$=barmax:b0$=barmin:bq$(n)=barquantities
  100. 12120 :
  101. 12130 IN$ = PT$:H = 18:V = 10:IW = 19: GOSUB 52000:PT$ = IN$
  102. 12140  IF BU  THEN  GOSUB 12630: GOTO 12350
  103. 12150  IF K$ = ES$  THEN 12430
  104. 12160  IF IN$ = ""  THEN  GOSUB 51000: GOTO 12130
  105. 12170 :
  106. 12180 :
  107. 12190 :
  108. 12200 :
  109. 12210 :
  110. 12220 :
  111. 12230 :
  112. 12240 :
  113. 12250 :
  114. 12260 :
  115. 12270 :
  116. 12280 :
  117. 12290 :
  118. 12300 :
  119. 12310 :
  120. 12320 :
  121. 12330 :
  122. 12340 T = 0
  123. 12350  VTAB 16: HTAB 22: PRINT  CHR$(65 +T)":" SPC( 14):IN$ = PQ$(T):H = 27:V = 16:IW = 8: GOSUB 56000:PQ$(T) = IN$
  124. 12360  IF BU  THEN  IF   NOT T  THEN 12130
  125. 12370  IF BU  THEN  IF T  THEN T = T -1: GOTO 12350
  126. 12380  IF K$ = ES$  THEN 12430
  127. 12390  IF PQ$(T) = ""  THEN  GOSUB 51000: GOTO 12350
  128. 12400  IF  LEFT$(PQ$(T),1) = "-"  THEN PQ$(T) =  MID$ (PQ$(T),2): GOSUB 51000: GOTO 12350
  129. 12410  IF T = 12  THEN  GOSUB 51000: GOTO 12130: REM  back to top
  130. 12420 T = T +1: GOTO 12350
  131. 12430  CALL BOX,7,10,26,5
  132. 12440  PRINT "Do you want to use this": PRINT "same data for the": PRINT "bar and line graphs?"
  133. 12450 PR$ = "       Press Y if you do.      ": GOSUB 50000
  134. 12460  GET K$
  135. 12470  IF K$ < >"Y"  AND K$ < >"y"  THEN 12620
  136. 12480 BT$ = PT$:LT$ = PT$:BA$ = "Y":BU$ = " ":LU$ = " "
  137. 12490  FOR T1 = 0 TO 16
  138. 12500 BQ$(T1) = PQ$(T1):LQ$(T1) = PQ$(T1)
  139. 12510  NEXT 
  140. 12520  IF  LEN(B9$)  THEN 12570
  141. 12530  FOR T1 = 16 TO 0  STEP  -1
  142. 12540  IF  VAL(BQ$(T1)) > VAL(B9$)  THEN B9$ = BQ$(T1)
  143. 12550  NEXT 
  144. 12560 B0$ = "0"
  145. 12570  IF  LEN(L9$)  THEN 12620
  146. 12580  FOR T1 = 16 TO 0  STEP  -1
  147. 12590  IF  VAL(LQ$(T1)) > VAL(L9$)  THEN L9$ = LQ$(T1)
  148. 12600  NEXT 
  149. 12610 L0$ = "0"
  150. 12620  RETURN 
  151. 12630 T = 12
  152. 12640  IF PQ$(T) = ""  THEN T = T -1: IF T  THEN 11560
  153. 12650  RETURN 
  154. 13000  REM ==========
  155. 13010  REM Line Entry
  156. 13020  REM ==========
  157. 13030  CALL BOX,4,7,37,18
  158. 13040  PRINT "   Line Chart"
  159. 13050 PR$ = "Fill the blanks. ESC when done.": GOSUB 50000
  160. 13060  PRINT  CHR$(20)
  161. 13070  VTAB 10: HTAB 5: PRINT "Graph Title:                     "
  162. 13080  VTAB 12: HTAB 5: PRINT "Units:           "
  163. 13090  VTAB 14: HTAB 5: PRINT "Max:             Min:            "
  164. 13100  VTAB 16: HTAB 5: PRINT "Quantity of item A:              "
  165. 13110  REM  bt$=bartitle:bu$=barunits:ba$=baravg:b9$=barmax:b0$=barmin:bq$(n)=barquantities
  166. 13120 :
  167. 13130 IN$ = LT$:H = 18:V = 10:IW = 19: GOSUB 52000:LT$ = IN$
  168. 13140  IF BU  THEN  GOSUB 13550: GOTO 13350
  169. 13150  IF K$ = ES$  THEN 13420
  170. 13160  IF IN$ = ""  THEN  GOSUB 51000: GOTO 13130
  171. 13170 IN$ = LU$:H = 12:V = 12:IW = 6: GOSUB 52000:LU$ = IN$
  172. 13180  IF BU  THEN 13130
  173. 13190  IF K$ = ES$  THEN 13420
  174. 13200  IF IN$ = ""  THEN  GOSUB 51000: GOTO 13170
  175. 13210 :
  176. 13220 :
  177. 13230 :
  178. 13240 :
  179. 13250 :
  180. 13260 IN$ = L9$:H = 10:V = 14:IW = 8: GOSUB 56000:L9$ = IN$
  181. 13270  IF BU  THEN 13170
  182. 13280  IF K$ = ES$  THEN 13420
  183. 13290  IF IN$ = ""  THEN  GOSUB 51000: GOTO 13260
  184. 13300 IN$ = L0$:H = 27:V = 14:IW = 8: GOSUB 56000:L0$ = IN$
  185. 13310  IF BU  THEN 13260
  186. 13320  IF K$ = ES$  THEN 13420
  187. 13330  IF IN$ = ""  THEN  GOSUB 51000: GOTO 13300
  188. 13340 T = 0
  189. 13350  VTAB 16: HTAB 22: PRINT  CHR$(65 +T)":" SPC( 14):IN$ = LQ$(T):H = 27:V = 16:IW = 8: GOSUB 56000:LQ$(T) = IN$
  190. 13360  IF BU  THEN  IF   NOT T  THEN 13300
  191. 13370  IF BU  THEN  IF T  THEN T = T -1: GOTO 13350
  192. 13380  IF K$ = ES$  THEN 13420
  193. 13390  IF LQ$(T) = ""  THEN  GOSUB 51000: GOTO 13350
  194. 13400  IF T = 12  THEN  GOSUB 51000: GOTO 13130: REM  back to top
  195. 13410 T = T +1: GOTO 13350
  196. 13420  CALL BOX,7,10,26,5
  197. 13430  PRINT "Do you want to use this": PRINT "same data for the": PRINT "bar and pie graphs?"
  198. 13440 PR$ = "       Press Y if you do.      ": GOSUB 50000
  199. 13450  GET K$
  200. 13460  IF K$ < >"Y"  AND K$ < >"y"  THEN 13540
  201. 13470 PT$ = LT$:BT$ = LT$:BU$ = LU$:B9$ = L9$:B0$ = L0$:BA$ = "Y"
  202. 13480  FOR T1 = 0 TO 16
  203. 13490 PQ$(T1) = LQ$(T1):BQ$(T1) = LQ$(T1)
  204. 13500  NEXT 
  205. 13510  FOR T1 = 0 TO 16
  206. 13520  IF  VAL(PQ$(T1)) <0  THEN PQ$(T1) = "0"
  207. 13530  NEXT 
  208. 13540  RETURN 
  209. 13550 T = 12
  210. 13560  IF LQ$(T) = ""  THEN T = T -1: IF T  THEN 11560
  211. 13570  RETURN 
  212. 14000  REM ==========
  213. 14010  REM clear data
  214. 14020  REM ==========
  215. 14030  CALL BOX,4,7,37,18
  216. 14040  PRINT "   Clear data"
  217. 14050  PRINT : PRINT "  Press RETURN to clear": PRINT "  all graph data."
  218. 14060  PRINT : PRINT "  Press any other key if you": PRINT "  don't want to clear data."
  219. 14070 PR$ = "Press RETURN or something else.": GOSUB 50000
  220. 14080  GET K$
  221. 14090  IF K$ < > CHR$(13)  THEN 14150
  222. 14100  CALL BOX,15,15,10,3: PRINT "Clearing"
  223. 14110 BA$ = "":BT$ = "":BU$ = "":B9$ = "":B0$ = "":PT$ = "":LT$ = "":LU$ = "":L9$ = "":L0$ = ""
  224. 14120  FOR T1 = 0 TO 16
  225. 14130 BQ$(T1) = "":PQ$(T1) = "":LQ$(T1) = ""
  226. 14140  NEXT 
  227. 14150  RETURN 
  228. 50000  REM ==========
  229. 50010  REM Prompt Box
  230. 50020  REM ==========
  231. 50030 W =  LEN(PR$) +2
  232. 50040  CALL BOX,40 -W,21,W,3
  233. 50050  PRINT PR$
  234. 50060  RETURN 
  235. 51000  REM ====
  236. 51010  REM Bell
  237. 51020  REM ====
  238. 51030  CALL  PEEK(121) + PEEK(122) *256 +28: REM  SPEED=   DEL <UNKNOWN TOKEN> SPEED= <CTRL-0x01> DEL <UNKNOWN TOKEN> SPEED= <CTRL-0x02><CTRL-0x18> HGR2 <CTRL-0x14> PLOT 0 TAB(  SPEED= <CTRL-0x02> DEL <UNKNOWN TOKEN> SPEED= $<CTRL-0x18> HGR2 <CTRL-0x08> PLOT 0 TAB(   NOT <UNKNOWN TOKEN> =  STR$`8H RIGHT$<CTRL-0x01> = <UNKNOWN TOKEN>h RIGHT$<CTRL-0x01> = <UNKNOWN TOKEN> ONERR <UNKNOWN TOKEN> -<CTRL-0x01><UNKNOWN TOKEN> RND =  VAL:`
  239. 51040  RETURN 
  240. 52000  REM ==================
  241. 52010  REM Input With Default
  242. 52020  REM ==================
  243. 52030  REM pass in$:return in$:pass h,v for htab,vtab: pass iw for input width
  244. 52040  ONERR  GOTO 52230
  245. 52050 BU = 0: REM default to go fwd after input
  246. 52060 BS$ =  CHR$(8):ES$ =  CHR$(27):CR$ =  CHR$(13): VTAB V: HTAB H
  247. 52070  PRINT IN$;
  248. 52080  PRINT "_"BS$;
  249. 52090  IF  PEEK(49152) <128  THEN  PRINT " "BS$;: GOTO 52080
  250. 52100  GET K$
  251. 52110  IF K$ =  CHR$(24)  THEN  IF  LEN(IN$)  THEN  HTAB H: PRINT  SPC(  LEN(IN$) +1):IN$ = "": GOTO 52060
  252. 52120  IF K$ =  CHR$(127)  THEN K$ = BS$
  253. 52130  IF K$ =  CHR$(9)  OR K$ =  CHR$(10)  THEN K$ = CR$
  254. 52140  IF K$ =  CHR$(11)  THEN K$ = CR$:BU = 1: REM back up after input
  255. 52150  IF K$ = ES$  THEN 52220
  256. 52160  IF K$ = BS$  THEN  IF  LEN(IN$) = 1  THEN IN$ = "": PRINT " "BS$BS$;: GOTO 52080
  257. 52170  IF K$ = BS$  THEN  IF  LEN(IN$)  THEN IN$ =  LEFT$(IN$, LEN(IN$) -1): PRINT " "BS$BS$;: GOTO 52080
  258. 52180  IF K$ = CR$  THEN  PRINT : GOTO 52220
  259. 52190  IF K$ > = " "  THEN  IF  LEN(IN$) <IW  THEN IN$ = IN$ +K$: PRINT K$;: GOTO 52210
  260. 52200  GOSUB 51000
  261. 52210  GOTO 52080
  262. 52220  POKE 216,0: RETURN 
  263. 52230  CALL  -3288: POKE 216,0: POKE 49168,0: GOTO 52040
  264. 56000  REM 
  265. 56010  REM ****************************
  266. 56020  REM *                          *
  267. 56030  REM * NAME:NUMERIC INPUT       *
  268. 56040  REM * PASS:V = VERT POSN       * 
  269. 56050  REM *      H = HORIZ POSN      *
  270. 56060  REM *     IW = INPUT WIDTH     *
  271. 56070  REM *    IN$ = DEFAULT         *
  272. 56080  REM * USES:T$,Tz,Ty,IN$,K$     *
  273. 56090  REM * RETN:IN$,K$              *      
  274. 56100  REM *                          *
  275. 56110  REM ****************************
  276. 56120  REM  
  277. 56130  ONERR  GOTO 56410
  278. 56140 BU = 0
  279. 56150  VTAB V: HTAB H: PRINT IN$;:TZ =  LEN(IN$)
  280. 56160  PRINT " " CHR$(8);
  281. 56170  IF  PEEK(49152) <128  THEN  PRINT "_" CHR$(8);: GOTO 56160
  282. 56180  GET T$
  283. 56190  IF T$ =  CHR$(127)  THEN T$ =  CHR$(8)
  284. 56200  IF T$ =  CHR$(24)  THEN  HTAB H: PRINT  SPC(  LEN(IN$) +1): HTAB H:IN$ = "": GOTO 56160
  285. 56210  IF T$ =  CHR$(27)  THEN 56340
  286. 56220  IF T$ =  CHR$(9)  OR T$ =  CHR$(10)  THEN T$ =  CHR$(13)
  287. 56230  IF T$ =  CHR$(11)  THEN T$ =  CHR$(13):BU = 1
  288. 56240  IF T$ =  CHR$(8)  THEN  IF  LEN(IN$) = 1  THEN IN$ = "": PRINT  CHR$(8);: GOTO 56160
  289. 56250  IF T$ =  CHR$(8)  THEN  IF  LEN(IN$)  THEN IN$ =  LEFT$(IN$, LEN(IN$) -1): PRINT  CHR$(8);: GOTO 56160
  290. 56260  IF T$ =  CHR$(13)  THEN  PRINT : GOTO 56340
  291. 56270  IF T$ >"9"  THEN 56320
  292. 56280  IF T$ <"0"  THEN  IF T$ < >"-"  AND T$ < >"."  THEN 56320
  293. 56290  IF T$ = "-"  THEN  IF  LEN(IN$)  THEN 56320
  294. 56300  IF T$ = "."  THEN TZ = TZ +1: IF TZ >1  THEN  GOSUB 56350
  295. 56310  IF T$ > = " "  THEN  IF  LEN(IN$) <IW  THEN IN$ = IN$ +T$: PRINT T$;: GOTO 56330
  296. 56320  GOSUB 51000
  297. 56330  GOTO 56160
  298. 56340 K$ = T$: RETURN 
  299. 56350 T$ = ""
  300. 56360  FOR TY = 1 TO  LEN(IN$)
  301. 56370  IF  MID$ (IN$,TY,1) < >"."  THEN T$ = T$ + MID$ (IN$,TY,1)
  302. 56380  NEXT 
  303. 56390 IN$ = T$: HTAB H: VTAB V: PRINT IN$;:TZ = 1:T$ = "."
  304. 56400  POKE 216,0: RETURN 
  305. 56410  CALL  -3288: POKE 216,0: POKE 49168,0: GOTO 56130